home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / DQRSL.z / DQRSL
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DQRSL   - DQRSL applies the output of DQRDC to compute coordinate
  10.      transformations, projections, and least squares solutions.  For K .LE.
  11.      MIN(N,P), let XK be the matrix
  12.  
  13.         XK = (X(JPVT(1)),X(JPVT(2)), ... ,X(JPVT(K)))
  14.  
  15.      formed from columnns JPVT(1), ... ,JPVT(K) of the original N X P matrix X
  16.      that was input to DQRDC (if no pivoting was done, XK consists of the
  17.      first K columns of X in their original order).  DQRDC produces a factored
  18.      orthogonal matrix Q and an upper triangular matrix R such that
  19.  
  20.         XK = Q * (R)
  21.         (0)
  22.  
  23.      This information is contained in coded form in the arrays X and QRAUX.
  24.  
  25.  
  26. SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
  27.       SUBROUTINE DQRSL(X,LDX,N,K,QRAUX,Y,QY,QTY,B,RSD,XB,JOB,INFO)
  28.  
  29. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  30.      On Entry
  31.  
  32.      XXXX DOUBLE PRECISION(LDX,P).
  33.         X contains the output of DQRDC.
  34.  
  35.      LLLLDDDDXXXX INTEGER.
  36.         LDX is the leading dimension of the array X.
  37.  
  38.      NNNN INTEGER.
  39.         N is the number of rows of the matrix XK.  It must
  40.         have the same value as N in DQRDC.
  41.  
  42.      KKKK INTEGER.
  43.         K is the number of columns of the matrix XK.  K
  44.         must not be greater than MIN(N,P), where P is the
  45.         same as in the calling sequence to DQRDC.
  46.  
  47.      QQQQRRRRAAAAUUUUXXXX DOUBLE PRECISION(P).
  48.         QRAUX contains the auxiliary output from DQRDC.
  49.  
  50.      YYYY DOUBLE PRECISION(N)
  51.         Y contains an N-vector that is to be manipulated
  52.         by DQRSL.
  53.  
  54.      JJJJOOOOBBBB INTEGER.
  55.         JOB specifies what is to be computed.  JOB has
  56.         the decimal expansion ABCDE, with the following
  57.         meaning.
  58.         If A .NE. 0, compute QY.
  59.         If B,C,D, or E .NE. 0, compute QTY.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
  71.  
  72.  
  73.  
  74.         If C .NE. 0, compute B.
  75.         If D .NE. 0, compute RSD.
  76.         If E .NE. 0, compute XB.
  77.         Note that a request to compute B, RSD, or XB
  78.         automatically triggers the computation of QTY, for
  79.         which an array must be provided in the calling
  80.         sequence.  On Return
  81.  
  82.      QQQQYYYY DOUBLE PRECISION(N).
  83.         QY contains Q*Y, if its computation has been
  84.         requested.
  85.  
  86.      QQQQTTTTYYYY DOUBLE PRECISION(N).
  87.         QTY contains TRANS(Q)*Y, if its computation has
  88.         been requested.  Here TRANS(Q) is the
  89.         transpose of the matrix Q.
  90.  
  91.      BBBB DOUBLE PRECISION(K)
  92.         B contains the solution of the least squares problem
  93.         minimize norm2(Y - XK*B),
  94.         if its computation has been requested.  (Note that
  95.         if pivoting was requested in DQRDC, the J-th
  96.         component of B will be associated with column JPVT(J)
  97.         of the original matrix X that was input into DQRDC.)
  98.  
  99.      RRRRSSSSDDDD DOUBLE PRECISION(N).
  100.         RSD contains the least squares residual Y - XK*B,
  101.         if its computation has been requested.  RSD is
  102.         also the orthogonal projection of Y onto the
  103.         orthogonal complement of the column space of XK.
  104.  
  105.      XXXXBBBB DOUBLE PRECISION(N).
  106.         XB contains the least squares approximation XK*B,
  107.         if its computation has been requested.  XB is also
  108.         the orthogonal projection of Y onto the column space
  109.         of X.
  110.  
  111.      IIIINNNNFFFFOOOO INTEGER.
  112.         INFO is zero unless the computation of B has
  113.         been requested and R is exactly singular.  In
  114.         this case, INFO is the index of the first zero
  115.         diagonal element of R and B is left unaltered.  The parameters QY,
  116.      QTY, B, RSD, and XB are not referenced if their computation is not
  117.      requested and in this case can be replaced by dummy variables in the
  118.      calling program.  To save storage, the user may in some cases use the
  119.      same array for different parameters in the calling sequence.  A
  120.      frequently occuring example is when one wishes to compute any of B, RSD,
  121.      or XB and does not need Y or QTY.  In this case one may identify Y, QTY,
  122.      and one of B, RSD, or XB, while providing separate arrays for anything
  123.      else that is to be computed.  Thus the calling sequence CALL
  124.      DQRSL(X,LDX,N,K,QRAUX,Y,DUM,Y,B,Y,DUM,110,INFO) will result in the
  125.      computation of B and RSD, with RSD overwriting Y.  More generally, each
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))                                                            DDDDQQQQRRRRSSSSLLLL((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      item in the following list contains groups of permissible identifications
  141.      for a single calling sequence.  1. (Y,QTY,B) (RSD) (XB) (QY) 2.
  142.      (Y,QTY,RSD) (B) (XB) (QY) 3. (Y,QTY,XB) (B) (RSD) (QY) 4. (Y,QY) (QTY,B)
  143.      (RSD) (XB) 5. (Y,QY) (QTY,RSD) (B) (XB) 6. (Y,QY) (QTY,XB) (B) (RSD) In
  144.      any group the value returned in the array allocated to the group
  145.      corresponds to the last member of the group.  LINPACK.  This version
  146.      dated 08/14/78 .  G. W. Stewart, University of Maryland, Argonne National
  147.      Lab.
  148.  
  149.      DDDDQQQQRRRRSSSSLLLL uses the following functions and subprograms. BLAS DAXPY,DCOPY,DDOT
  150.      Fortran DABS,MIN0,MOD
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.